kafka遇到Error while fetching metadata xxx: {LEADER 您所在的位置:网站首页 collect file 37 kafka遇到Error while fetching metadata xxx: {LEADER

kafka遇到Error while fetching metadata xxx: {LEADER

#kafka遇到Error while fetching metadata xxx: {LEADER| 来源: 网络整理| 查看: 265

网上和本人遇到的不太一样:

有几种情况:

1.少broker或者broker没有运行:https://www.cnblogs.com/yoyowin/p/13091694.html

2.kafka的IP配置为外网IP,但是外网端口没屏蔽的:https://blog.csdn.net/lsr40/article/details/92789081

本人是运维重启kafka,没有做任何修改,验证是否正常重启时,

1. 启动kafka-console-producer.sh

2.启动kafka-console-consumer.sh

报错:Error while fetching metadata with correlation id 62 : {my_test_topic=LEADER_NOT_AVAILABLE}

但是生产消息和消费消息都正常!启动测试工具大量消费数据也正常!所以这个Error应该是一直存在。看了些资料和本人遇到的都不一样,但是大致是说两个kafka的IP配置

本人kafak配置:

# The address the socket server listens on. It will get the value returned from # java.net.InetAddress.getCanonicalHostName() if not configured. #   FORMAT: #     listeners = listener_name://host_name:port #   EXAMPLE: #     listeners = PLAINTEXT://your.host.name:9092 listeners=PLAINTEXT://:9092

# Hostname and port the broker will advertise to producers and consumers. If not set, # it uses the value for "listeners" if configured.  Otherwise, it will use the value # returned from java.net.InetAddress.getCanonicalHostName(). advertised.listeners=PLAINTEXT://192.168.1.56:9092

第一尝试:把listeners改成主机名,但是重启时报错,重复了。

第二尝试:测试网listeners配的是内网IP,和advertised.listeners相同。这种方式是正常的。

===========================================================================================

以下转栽:https://blog.csdn.net/lsr40/article/details/92789081

[Producer clientId=console-producer] Error while fetching metadata with correlation id 62 : {my_test_topic=LEADER_NOT_AVAILABLE}

我发现有人的报错和我一样,报错就是类似这个:https://www.orchome.com/1108

情况大概是这样的,需要检查几个地方:

1、kafka服务是否正常?

-1.我们kafka服务是通过CM启动的,可以在CM上面查看运行情况(我这个报错,CM上看是正常的)

-2.可以去到具体启动kafka的那几台机器上通过:jps -ml来查看(jps -ml可以查看该broker启动的时候我读取哪个配置文件),这个很关键!因为如果服务用A配置文件启动,结果你改的是B配置文件,就算你把B配置文件改上天了,都不会生效的!!

 

2、是否是自己的代码或者其他东西写错了?

当你确认服务正常的时候,那么可以使用自带的生产者和消费者来测试,因为这个是可以确保生产者和消费者没问题的一个点(因为你手写的生产者或者消费者代码有可能会有问题啊!!!)

测试命令如下:

1、创建topic

kafka-topics.sh --create --zookeeper zk1:2181 --replication-factor 1 --partitions 1 --topic mytest_topic

  

2、开启生产者:

kafka-console-producer.sh --broker-list kafka1:9092,kafka2:9092... --topic mytest_topic

 

 

3-1、消费者操作:

kafka-console-consumer.sh --broker-list kafka1:9092,kafka2:9092... --from-beginning --topic mytest_topic

3-2、也可以这么开启消费者:

bin/kafka-console-consumer.sh --zookeeper zk1:2181 --topic topic mytest_topic

结果我就是在这一步开启生产者要发数据的时候报错了!!!

3、如何解决该报错?

当我通过前两步确认了你的环境没什么大问题,但是却发送不了数据,我开始静下心来看报错!

1、Error while fetching metadata (获取元数据异常) 2、LEADER_NOT_AVAILABLE (无法获取该topic的leader)

也就是说,很可能是注册在zookeeper上的信息有问题!通过新创建topic,也不能发送消息的情况,我确认了,这个异常跟topic没有什么关系,所以肯定还是broker的问题!

因此我回想起了之前的事情:

【kafka】报错:advertised.listeners参数的重要性(外部访问局域网kafka):https://blog.csdn.net/lsr40/article/details/84135959

这个集群的advertised.listeners参数,还是外网的ip和端口,是不是有可能这个外网ip和端口被运维关掉了的原因,导致节点之间通讯异常,topic选不出leader呢(因为topic是通过leader来与生产者和消费者交互的,这部分知识大家可以自行百度,或者查阅我的kafka的相关文章)

果然经过我的确认,确实那个ip和外网端口已经关闭,所以我将kafka的配置文件进行修改:

advertised.listeners改成内网ip(默认当前机器的ip) advertised.port改成内网端口(默认9092)

重启kafka服务,就修好了该kafka环境

======================================================================

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有